package com.suning.sawp.intf.dao;

import java.util.Date;
import java.util.List;

import com.suning.sawp.dto.precharge.ChargeOrderForPageRtn;
import com.suning.sawp.dto.precharge.PrechargeStatis;
import com.suning.sawp.po.precharge.PreChargeOrder;
import com.suning.sawp.po.precharge.PrechargeActivity;
import com.suning.sawp.po.precharge.PrechargeRule;

/**
 * 
 * 现金充值记录列表数据库操作<br> 
 * 〈功能详细描述〉
 *
 * @author 14062606
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public interface PreChargeDaoService {
	
	/**
	 * 根据活动id查询现金充值记录
	 * @param clientSerialNo
	 * @return
	 */
	PreChargeOrder queryOrderBySerialNo(String clientSerialNo);
	
	/**
	 * 功能描述: 统计符合查询条件的现金充值记录总数<br>
     * 〈功能详细描述〉
     * 
	 * @param startTime
	 * @param endTime
	 * @param regionCode
	 * @param storeCode
	 * @return
	 */
	int countChargeOrderForPage(Date startTime, Date endTime, String regionCode,
			String storeCode);
	
	/**
	 * 功能描述: 查询现金充值记录信息(分页)<br>
     * 〈功能详细描述〉
     * 
	 * @param startTime
	 * @param endTime
	 * @param regionCode
	 * @param storeCode
	 * @param startIndex
	 * @param limit
	 * @return
	 */
	List<ChargeOrderForPageRtn> queryChargeOrderForPage(Date startTime, Date endTime, 
			String regionCode, String storeCode, Integer chargeAmount,
			Integer couponAmount, Integer startIndex, Integer limit);
	
	/**
	 * 
	 * 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param startTime
	 * @param endTime
	 * @param regionCode
	 * @param storeCode
	 * @param startIndex
	 * @param limit
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	List<ChargeOrderForPageRtn> queryChargeOrderForPage(Date startTime, Date endTime, 
            String regionCode, String storeCode, Integer startIndex, Integer limit);
	
	 /**
     * 
     * 功能描述: 新增充值活动<br>
     * 〈功能详细描述〉
     *
     * @param act
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    int insertPrechargeAct(PrechargeActivity act);
    /**
     * 
     * 功能描述: 新增充值规则<br>
     * 〈功能详细描述〉
     *
     * @param rule
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void insertRule(PrechargeRule rule);
    /**
     * 
     * 功能描述: 修改活动状态<br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param status
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void updateActStatus(String storeCode,Integer status,Integer operateType);
    /**
     * 
     * 功能描述: 根据结束时间修改状态<br>
     * 〈功能详细描述〉
     *
     * @param status
     * @param endTime
     * @param operateType
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void updateActStatusByEndTime(Integer endTime);
   
    /**
     * 
     * 功能描述: 修改活动状态<br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param status
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void updateActStatusByRuleCode(String ruleCode);
    /**
     * 
     * 功能描述: 查询预充值活动列表<br>
     * 〈功能详细描述〉
     *
     * @param queryCon
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<PrechargeActivity> queryAct(PrechargeActivity queryCon);
    /**
     * 
     * 功能描述: 查询促销规则<br>
     * 〈功能详细描述〉
     *
     * @param promotionId
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<PrechargeRule> queryActRule(Integer promotionId);
    /**
     * 
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    PrechargeActivity queryOnSaleActivity(String storeCode);
    /**
     * 
     * 功能描述: 查询门店充值数据统计<br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param soreColumn
     * @param sortType
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<PrechargeStatis> queryPrechargeStatis(String storeCode,Integer pageNo,Integer pageSize,Integer sortColumn,Integer sortType);
    /**
     * 
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    int queryPrechargeStatisCount(String storeCode);
    /**
     * 
     * 功能描述:  后台查询充值活动<br>
     * 〈功能详细描述〉
     *
     * @param keyWord
     * @param startTime
     * @param endTime
     * @param pageNo
     * @param pageSize
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<PrechargeActivity> queryActListPage(String keyWord,String startTime,String endTime,Integer pageNo,Integer pageSize);
    /**
     * 
     * 功能描述: 后台查询充值活动列表大小<br>
     * 〈功能详细描述〉
     *
     * @param keyWord
     * @param startTime
     * @param endTime
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    int queryActListPageCount(String keyWord,String startTime,String endTime);
    /**
     * 
     * 功能描述: 根据促销活动Id更新活动状态<br>
     * 〈功能详细描述〉
     *
     * @param promotionId
     * @param status
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void updateStatusByPromoId(Integer promotionId,Integer status);
}
